luci-app-acme: fix review problems
authorSergey Ponomarev <[email protected]>
Sat, 6 Sep 2025 13:19:58 +0000 (16:19 +0300)
committerToke Høiland-Jørgensen <[email protected]>
Tue, 7 Oct 2025 12:01:06 +0000 (14:01 +0200)
Signed-off-by: Sergey Ponomarev <[email protected]>
applications/luci-app-acme/htdocs/luci-static/resources/view/acme/acme.js
applications/luci-app-acme/root/usr/share/rpcd/acl.d/luci-app-acme.json

index 6e6fd5f7f123a33f7ab0b790b8bab803fe91db57..a53f5da5fd8c6d8029461388e875aae7abe9bfb0 100644 (file)
@@ -19,7 +19,7 @@ return view.extend({
                                return certs;
                        }),
                        L.resolveDefault(fs.exec_direct('/usr/libexec/acmesh-dnsinfo.sh'), ''),
-                       L.resolveDefault(fs.stat('/usr/lib/acme/client/dnsapi'), null),
+                       L.resolveDefault(fs.list('/usr/lib/acme/client/dnsapi/'), null),
                        L.resolveDefault(fs.lines('/proc/sys/kernel/hostname'), ''),
                        L.resolveDefault(uci.load('ddns')),
                ]);
@@ -272,7 +272,6 @@ return view.extend({
                        )
                );
                o.depends('acme_server', '');
-               o.depends('acme_server', 'letsencrypt');
                o.optional = true;
                o.modalonly = true;
 
@@ -291,9 +290,19 @@ return view.extend({
        }
 });
 
+/**
+ * Is not an IP or a local domain without TLD
+ */
 function _isFqdn(domain) {
-       // Is not an IP i.e. starts from alphanumeric and has least one dot
-       return /[a-z0-9-]\..*$/.test(domain) && !/[0-9-]\..*$/.test(domain);
+       let i = domain.lastIndexOf('.');
+       if (i < 0) {
+               return false;
+       }
+       let tld = domain.substr(i + 1);
+       if (tld.length < 2) {
+               return false;
+       }
+       return /^[a-z0-9]+$/.test(tld);
 }
 
 function _guessDomain(hostname) {
@@ -336,7 +345,7 @@ function _collectDdnsDomains() {
                if (credentials.length > 0) {
                        ddnsDomains.push({
                                sectionId: ddnsService['.name'],
-                               domains: [ddnsService['domain'], '*.' + ddnsService['domain']],
+                               domains: [ddnsService['domain'], ddnsService['domain']],
                                dnsApi: dnsApi,
                                credentials: credentials,
                        });
index 5abeab06329e919a602924a4d5efc6be4c9dbc63..4eacfae1bfb099e0023beafc4552f14247519324 100644 (file)
@@ -4,13 +4,14 @@
                 "read": {
                         "cgi-io": [ "exec" ],
                         "file": {
+                                "/usr/lib/acme/client/dnsapi": [ "list" ],
                                 "/proc/sys/kernel/hostname": [ "read" ],
                                 "/etc/ssl/acme": [ "list" ],
                                 "/usr/libexec/acmesh-dnsinfo.sh": [ "exec" ],
                                 "/sbin/logread -e acme": [ "exec" ],
                                 "/usr/sbin/logread -e acme": [ "exec" ]
                         },
-                        "uci": [ "acme" ]
+                        "uci": [ "acme", "ddns" ]
                 },
                 "write": {
                         "uci": [ "acme" ]